/*
我们现在都知道二分查找的主体是一个while循环，在每次循环里面进行询问，从而决定是找到了数据停止循环还是改变查找区间的范围。现在就是考验大家是否理解了原理的时候了！
运用二分查找在序列{1，2，3，……，n}中找到k需要循环多少次？

Input
输入多组数据， 每组输入两个整数n和k，占一行（0<= k <= n）。n为32位整数
Output
对每组输入，输出在序列{1，2，3，……，n}中找到k的循环次数。

Sample Input
5 2
5 1
10 3

Sample Output
3
2
3
*/
#include <bits/stdc++.h>
using namespace std;
int a[1000006];
int search(int a[], int n, int k)
{
    int sum, L, R, mid;
    L = 0, R = n - 1; // 1~i，共i个数据
    sum = 0;
    while (L <= R)
    {
        mid = (L + R) / 2; // 中间下标
        if (a[mid] < k)
        {
            L = mid + 1;
            sum++;
            //cout <<"mid: "<<mid<<" sum: "<< sum << endl;
        }
        else if (a[mid] > k)
        {
            R = mid - 1;
            sum++;
            //cout <<"mid: "<<mid<<" sum: "<< sum << endl;
        }
        else
        {
            sum++;
            //cout <<"mid: "<<mid<<" sum: "<< sum << endl;
            return sum;
        }
    }
    return -1;
}
int main()
{
    int i = 0, k, n, flag;
    while (cin >> n)
    { // n个数，k为待查找数
        cin >> k;
        for (i = 0; i < n; i++)
        {
            a[i]=i+1;
        }
        flag = search(a, n, k);
        cout << flag << endl;
    }
    return 0;
}
